﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using persistencia;

namespace GIO
{
    public partial class altaIncidente : System.Web.UI.Page
    {
        public static int usuarioAAsignar = 0;

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void ddlClasIncidentes_SelectedIndexChanged(object sender, EventArgs e)
        {
            
            this.lbltipoIncidente.Visible = true;
            this.ddlTipoIncidente.Visible = true;
            this.lblTecnico.Visible = true;
            this.txtTecnico.Visible = true;
            if (Convert.ToInt32(this.ddlClasIncidentes.SelectedItem.Value) > 0)
            {
                servicios.servicioIncidente si = new servicios.servicioIncidente();
                servicios.ServicioUsuario su = new servicios.ServicioUsuario();
                usuarioAAsignar = su.getUsuarioMenosTktsAsignados(Convert.ToInt32(this.ddlClasIncidentes.SelectedItem.Value));
                usuario u = new usuario();
                u = su.getUsuarioById(usuarioAAsignar);
                this.lblTecnico.Visible = true;
                this.txtTecnico.Text = u.nombre_usuario + " " + u.apellido_usuario;
                this.txtTecnico.Visible = true;
            }

            getTipoIncidentes(this.ddlClasIncidentes.SelectedItem.Value);

        }



        protected void ddlPrioridad_SelectedIndexChanged(object sender, EventArgs e)
        {

        }


        
        private void getTipoIncidentes(string idClasIncidente)
        {
            this.ddlTipoIncidente.Items.Clear();
            this.ddlTipoIncidenteExtra.Items.Clear();
            servicios.servicioIncidente si = new servicios.servicioIncidente();
            List<tipo_incidente> tipoIncidentes = new List<tipo_incidente>();
            tipoIncidentes = si.getTipoincidentes(idClasIncidente);
            if ( idClasIncidente != "")
            {
                if (tipoIncidentes.Count > 0)
                {
                    foreach (tipo_incidente ti in tipoIncidentes)
                    {
                        ListItem li = new ListItem();
                        li.Text = ti.descr_tipo_incidente;
                        li.Value = Convert.ToString(ti.id);
                        this.ddlTipoIncidente.Items.Add(li);
                    }
                }
                else
                {
                    lblErrores.Text = "No hay Tipos de incidentes para esa clasificacion.";
                }

            }
            else
            {
                lblErrores.Text = "Debe seleccionar la Clasificacion del Incidente.";
            }
        }

        private void getTipoIncidentesExtra(string idTipoIncidente)
        {
            this.ddlTipoIncidenteExtra.Items.Clear();
            servicios.servicioIncidente si = new servicios.servicioIncidente();
            List<tipo_incidente_extra> tipoIncidentesExtra = new List<tipo_incidente_extra>();
            tipoIncidentesExtra = si.getTipoIncidenteExtra(idTipoIncidente);
            if (idTipoIncidente != "")
            {
                if (tipoIncidentesExtra.Count > 0)
                {
                    foreach (tipo_incidente_extra tie in tipoIncidentesExtra)
                    {
                        ListItem li = new ListItem();
                        li.Text = tie.descr_tipo_incidente_extra;
                        li.Value = Convert.ToString(tie.id);
                        this.ddlTipoIncidenteExtra.Items.Add(li);
                    }
                }
                else
                {
                    lblErrores.Text = "No hay Sub Tipos de incidentes para esa clasificacion.";
                }

            }
            else
            {
                lblErrores.Text = "Debe seleccionar el Tipo de Incidente.";
            }
        }


        protected void ddlTipoIncidente_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.lbltipoIncidenteExtra.Visible = true;
            this.ddlTipoIncidenteExtra.Visible = true;
            getTipoIncidentesExtra(this.ddlTipoIncidente.SelectedItem.Value);
        }

        protected void btnAgregarIncidente_Click(object sender, EventArgs e)
        {
            if (Convert.ToInt32(this.ddlCliente.SelectedItem.Value) > 0)
            {
                if (this.txtTitulo.Text != "")
                {
                    if (this.txaDetalle.InnerText != "")
                    {
                        if (Convert.ToInt32(this.ddlClasIncidentes.SelectedItem.Value) > 0)
                        {
                            servicios.ServicioUsuario su = new servicios.ServicioUsuario();
                            servicios.servicioIncidente si = new servicios.servicioIncidente();
                            incidente i = new incidente();
                            DateTime idCreator = DateTime.Now;
                            i.id = Math.Abs(idCreator.GetHashCode());
                            i.titulo = this.txtTitulo.Text;
                            i.fecha_inicio = DateTime.Now;
                            i.id_cliente = Convert.ToInt32(this.ddlCliente.SelectedItem.Value);
                            i.detalle = this.txaDetalle.InnerText;
                            i.id_clasificacion_incidente = Convert.ToInt32(this.ddlClasIncidentes.SelectedItem.Value);
                            i.id_tipo_incidente = Convert.ToInt32(this.ddlTipoIncidente.SelectedItem.Value);
                            i.id_tipo_incidente_extra = Convert.ToInt32(this.ddlTipoIncidenteExtra.SelectedItem.Value);
                            i.id_estado = 1;
                            i.id_prioridad = Convert.ToInt32(this.ddlPrioridad.SelectedItem.Value);
                            i.id_usuario_sol = su.getUsuarioMenosTktsAsignados(Convert.ToInt32(this.ddlClasIncidentes.SelectedItem.Value));
                            i.fecha_fin = null;
                            if (si.agregarIncidente(i))
                            {
                                this.lblErrores.Text = "El incidente fue agregado correctamente.";
                            }
                            else
                            {
                                this.lblErrores.Text = "El incidente no se pudo agregar.";
                            }

                        }
                        else
                        {
                            lblErrores.Text = "Debe seleccionar una clasificacion de incidente.";
                        }

                    }
                    else {
                        lblErrores.Text = "Debe ingresar un detalle del incidente.";
                    }
                }
                else
                {
                    lblErrores.Text = "Debe ingresar un titulo.";
                }

            }
            else
            {
                this.lblErrores.Text = "Debe seleccionar un cliente";
            }

        }

        private usuario getUsuarioMenosTktsAsignados(int p)
        {
            servicios.servicioIncidente si = new servicios.servicioIncidente();
            usuario us = new usuario();

            return us;
        }






    }
}